/* * jQuery Numerator Plugin 0.2.1 * https://github.com/garethdn/jquery-numerator * * Copyright 2015, Gareth Nolan * http://ie.linkedin.com/in/garethnolan/ * Based on jQuery Boilerplate by Zeno Rocha with the help of Addy Osmani * http://jqueryboilerplate.com * * Licensed under the MIT license: * http://www.opensource.org/licenses/MIT */ ;(function (factory) { 'use strict'; if (typeof define === 'function' && define.amd) { // AMD is used - Register as an anonymous module. define(['jquery'], factory); } else if (typeof exports === 'object') { factory(require('jquery')); } else { // Neither AMD nor CommonJS used. Use global variables. if (typeof jQuery === 'undefined') { throw 'jquery-numerator requires jQuery to be loaded first'; } factory(jQuery); } }(function ($) { var pluginName = "numerator", defaults = { easing: 'swing', duration: 500, delimiter: undefined, rounding: 0, toValue: undefined, fromValue: undefined, queue: false, onStart: function(){}, onStep: function(){}, onProgress: function(){}, onComplete: function(){} }; function Plugin ( element, options ) { this.element = element; this.settings = $.extend( {}, defaults, options ); this._defaults = defaults; this._name = pluginName; this.init(); } Plugin.prototype = { init: function () { this.parseElement(); this.setValue(); }, parseElement: function () { var elText = $.trim($(this.element).text()); this.settings.fromValue = this.settings.fromValue || this.format(elText); }, setValue: function() { var self = this; $({value: self.settings.fromValue}).animate({value: self.settings.toValue}, { duration: parseInt(self.settings.duration, 10), easing: self.settings.easing, start: self.settings.onStart, step: function(now, fx) { $(self.element).text(self.format(now)); // accepts two params - (now, fx) self.settings.onStep(now, fx); }, // accepts three params - (animation object, progress ratio, time remaining(ms)) progress: self.settings.onProgress, complete: self.settings.onComplete }); }, format: function(value){ var self = this; if ( parseInt(this.settings.rounding ) < 1) { value = parseInt(value, 10); } else { value = parseFloat(value).toFixed( parseInt(this.settings.rounding) ); } if (self.settings.delimiter) { return this.delimit(value) } else { return value; } }, // TODO: Add comments to this function delimit: function(value){ var self = this; value = value.toString(); if (self.settings.rounding && parseInt(self.settings.rounding, 10) > 0) { var decimals = value.substring( (value.length - (self.settings.rounding + 1)), value.length ), wholeValue = value.substring( 0, (value.length - (self.settings.rounding + 1))); return self.addDelimiter(wholeValue) + decimals; } else { return self.addDelimiter(value); } }, addDelimiter: function(value){ return value.toString().replace(/\B(?=(\d{3})+(?!\d))/g, this.settings.delimiter); } }; $.fn[ pluginName ] = function ( options ) { return this.each(function() { if ( $.data( this, "plugin_" + pluginName ) ) { $.data(this, 'plugin_' + pluginName, null); } $.data( this, "plugin_" + pluginName, new Plugin( this, options ) ); }); }; }));__( 'Not Found', 'elementor' ); __( 'Not Found', 'elementor' ); __( 'Something went wrong.', 'elementor' ); __( 'Continue', 'elementor' ); __( 'Go Back', 'elementor' ); __( 'First, enable unfiltered file uploads.', 'elementor' ); __( 'Enable', 'elementor' ); __( 'Skip', 'elementor' ); __( 'App could not be loaded', 'elementor' ); __( 'We’re sorry, but something went wrong. Click on ‘Learn more’ and follow each of the steps to quickly solve it.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Go Back', 'elementor' ); __( 'This file type is not allowed', 'elementor' ); __( 'This file type is not allowed', 'elementor' ); __( 'Select File', 'elementor' ); __( 'Upgrade Now', 'elementor' ); __( 'Loading', 'elementor' ); __( 'Back to dashboard', 'elementor' ); __( 'Close', 'elementor' ); __( 'Elementor', 'elementor' ); __( 'Header', 'elementor' ); __( 'What is a Header Template?', 'elementor' ); __( 'The header template allows you to easily design and edit custom WordPress headers so you are no longer constrained by your theme’s header design limitations.', 'elementor' ); __( 'You can create multiple headers, and assign each to different areas of your site.', 'elementor' ); __( 'Footer', 'elementor' ); __( 'What is a Footer Template?', 'elementor' ); __( 'The footer template allows you to easily design and edit custom WordPress footers without the limits of your theme’s footer design constraints', 'elementor' ); __( 'You can create multiple footers, and assign each to different areas of your site.', 'elementor' ); __( 'Single Page', 'elementor' ); __( 'What is a Single Page Template?', 'elementor' ); __( 'A single page template allows you to easily create the layout and style of pages, ensuring design consistency across all the pages of your site.', 'elementor' ); __( 'You can create multiple single page templates, and assign each to different areas of your site.', 'elementor' ); __( 'Single Post', 'elementor' ); __( 'What is a Single Post Template?', 'elementor' ); __( 'A single post template allows you to easily design the layout and style of posts, ensuring a design consistency throughout all your blog posts, for example.', 'elementor' ); __( 'You can create multiple single post templates, and assign each to a different category.', 'elementor' ); __( 'Archive', 'elementor' ); __( 'What is an Archive Template?', 'elementor' ); __( 'An archive template allows you to easily design the layout and style of archive pages - those pages that show a list of posts (e.g. a blog’s list of recent posts), which may be filtered by terms such as authors, categories, tags, search results, etc.', 'elementor' ); __( 'If you’d like a different style for a specific category, it’s easy to create a separate archive template whose condition is to only display when users are viewing that category’s list of posts.', 'elementor' ); __( 'search results page', 'elementor' ); __( 'What is a Search Results Template?', 'elementor' ); __( 'You can easily control the layout and design of the Search Results page with the Search Results template, which is simply a special archive template just for displaying search results.', 'elementor' ); __( 'You can customize the message if there are no results for the search term.', 'elementor' ); __( 'Product', 'elementor' ); __( 'What is a Single Product Template?', 'elementor' ); __( 'A single product template allows you to easily design the layout and style of WooCommerce single product pages, and apply that template to various conditions that you assign.', 'elementor' ); __( 'You can create multiple single product templates, and assign each to different types of products, enabling a custom design for each group of similar products.', 'elementor' ); __( 'Products Archive', 'elementor' ); __( 'What is a Products Archive Template?', 'elementor' ); __( 'A products archive template allows you to easily design the layout and style of your WooCommerce shop page or other product archive pages - those pages that show a list of products, which may be filtered by terms such as categories, tags, etc.', 'elementor' ); __( 'You can create multiple archive product templates, and assign each to different categories of products. This gives you the freedom to customize the appearance for each type of product being shown.', 'elementor' ); __( '404 page', 'elementor' ); __( 'What is a 404 Page Template?', 'elementor' ); __( 'A 404 page template allows you to easily design the layout and style of the page that is displayed when a visitor arrives at a page that does not exist.', 'elementor' ); __( 'Keep your site\'s visitors happy when they get lost by displaying your recent posts, a search bar, or any information that might help the user find what they were looking for.', 'elementor' ); __( 'Are you sure?', 'elementor' ); __( 'Removing %s will permanently delete changes made to the Websites Template\'s content and site settings', 'elementor' ); __( 'Delete', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Try a different Website Template or build your site from scratch.', 'elementor' ); __( 'OK', 'elementor' ); __( 'Library', 'elementor' ); __( 'You\'re ready to apply a new Kit!', 'elementor' ); __( 'Continue to new Kit', 'elementor' ); __( 'Close', 'elementor' ); __( '%s was successfully deleted', 'elementor' ); __( 'Your Kit', 'elementor' ); __( 'Add New', 'elementor' ); __( 'Close', 'elementor' ); __( 'Tip', 'elementor' ); __( 'Close', 'elementor' ); __( 'Theme Builder', 'elementor' ); __( 'Upgrade', 'elementor' ); __( 'Customize every part of your site', 'elementor' ); __( 'Get total control, consistency and a faster workflow by designing the recurring parts that make up a complete website like the Header & Footer, Archive, 404, WooCommerce pages and more.', 'elementor' ); __( 'Upgrade Now', 'elementor' ); __( 'Theme Builder could not be loaded', 'elementor' ); __( 'We’re sorry, but something went wrong. Click on ‘Learn more’ and follow each of the steps to quickly solve it.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Go Back', 'elementor' ); __( 'Info', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Tip', 'elementor' ); __( 'Watch Video', 'elementor' ); __( 'Upgrade Now', 'elementor' ); __( 'Site Parts', 'elementor' ); __( 'All Parts', 'elementor' ); __( 'Error:', 'elementor' ); __( 'Loading', 'elementor' ); __( 'Templates & Theme Builder', 'elementor' ); __( 'WooCommerce Builder', 'elementor' ); __( 'Lead Collection & Form Builder', 'elementor' ); __( 'Dynamic Content', 'elementor' ); __( 'Popup Builder', 'elementor' ); __( 'Custom Code & CSS', 'elementor' ); __( 'Motion Effects & Animations', 'elementor' ); __( 'Notes & Collaboration', 'elementor' ); __( 'Theme Builder', 'elementor' ); __( 'AI for code, images, & layouts', 'elementor' ); __( 'Lead Collection', 'elementor' ); __( 'Image optimization', 'elementor' ); __( 'Custom Code & CSS', 'elementor' ); __( 'Accessibility scans and fixes', 'elementor' ); __( 'Email deliverability', 'elementor' ); __( 'WooCommerce Builder', 'elementor' ); __( 'Upload and Install Elementor Pro', 'elementor' ); __( 'Uploading', 'elementor' ); __( 'Import your Elementor Pro plugin file', 'elementor' ); __( 'Drag & Drop your .zip file here', 'elementor' ); __( 'or', 'elementor' ); __( 'Browse', 'elementor' ); __( 'Don\'t know where to get the file from?', 'elementor' ); __( 'Click here', 'elementor' ); __( 'Next', 'elementor' ); __( 'Skip', 'elementor' ); __( 'Sorry, the name wasn\'t saved. Try again, or skip for now.', 'elementor' ); __( 'Now, let\'s give your site a name.', 'elementor' ); __( 'This is what your site is called on the WP dashboard, and can be changed later from the general settings - it\'s not your website\'s URL.', 'elementor' ); __( 'Skip', 'elementor' ); __( 'Next', 'elementor' ); __( 'Have a logo? Add it here.', 'elementor' ); __( 'Otherwise, you can skip this and add one later.', 'elementor' ); __( 'Potential Site Logo', 'elementor' ); __( 'Drop image here', 'elementor' ); __( 'or', 'elementor' ); __( 'Open Media Library', 'elementor' ); __( 'This file type is not supported. Try a different type of file', 'elementor' ); __( 'This allows Elementor to scan your SVGs for malicious content. If you do not wish to allow this, use a different image format.', 'elementor' ); __( 'There was a problem with enabling SVG uploads. Try again, or use another image format.', 'elementor' ); __( 'Next', 'elementor' ); __( 'Install Hello Biz', 'elementor' ); __( 'Select theme', 'elementor' ); __( 'Continue with Hello Biz Theme', 'elementor' ); __( 'Your site\'s got Hello theme. High-five!', 'elementor' ); __( 'Next', 'elementor' ); __( 'There was a problem installing Hello Biz Theme.', 'elementor' ); __( 'Skip', 'elementor' ); __( 'Hold on, this can take a minute...', 'elementor' ); __( 'Okay, now we\'re really close...', 'elementor' ); __( 'There was a problem activating Hello Biz Theme.', 'elementor' ); __( 'You can switch your theme anytime', 'elementor' ); __( 'You can switch your theme later on', 'elementor' ); __( 'Continue with blank canvas', 'elementor' ); __( 'Skip', 'elementor' ); __( 'One', 'elementor' ); __( 'Advanced', 'elementor' ); __( 'Essential', 'elementor' ); __( 'Upgrade Now', 'elementor' ); __( 'Skip', 'elementor' ); __( 'Skip setup', 'elementor' ); __( 'To get the most out of Elementor, we\'ll help you take your', 'elementor' ); __( 'first steps:', 'elementor' ); __( 'Set your site\'s theme', 'elementor' ); __( 'Choose additional features', 'elementor' ); __( 'Choose how to start creating', 'elementor' ); __( 'Set your site\'s theme', 'elementor' ); __( 'Give your site a name & logo', 'elementor' ); __( 'Choose how to start creating', 'elementor' ); __( 'To get the most of Elementor, we\'ll connect your account.', 'elementor' ); __( 'Then you can:', 'elementor' ); __( 'Access dozens of professionally designed templates', 'elementor' ); __( 'Manage all your sites from the My Elementor dashboard', 'elementor' ); __( 'Unlock tools that streamline your workflow and site setup', 'elementor' ); __( 'To get the most out of Elementor, we\'ll connect your account.', 'elementor' ); __( 'Then you can:', 'elementor' ); __( 'Choose from countless professional templates', 'elementor' ); __( 'Manage your site with our handy dashboard', 'elementor' ); __( 'Take part in the community forum, share & grow together', 'elementor' ); __( 'Let\'s do it', 'elementor' ); __( 'Start setup', 'elementor' ); __( 'Oops, the connection failed. Try again.', 'elementor' ); __( 'Already have an account?', 'elementor' ); __( 'Click here to connect', 'elementor' ); __( 'Header and footer templates', 'elementor' ); __( 'Build a branded look with ready-to-use headers and footers', 'elementor' ); __( 'Business-focused widgets', 'elementor' ); __( 'Add contact forms, CTAs, and hero sections with one click', 'elementor' ); __( 'Optimized performance', 'elementor' ); __( 'Loads fast and looks great on any device', 'elementor' ); __( 'Start with Hello Biz', 'elementor' ); __( 'Some of the features you get with Hello Biz theme:', 'elementor' ); __( 'Hello Theme', 'elementor' ); __( 'Build without limits', 'elementor' ); __( 'A minimal theme combining speed, flexibility, and control', 'elementor' ); __( 'Hello Biz', 'elementor' ); __( 'Instant online presence', 'elementor' ); __( 'A business-first theme offering smart layouts, templates, and site parts', 'elementor' ); __( 'Choose the right theme for your website', 'elementor' ); __( 'Hello themes provide a lightweight, Elementor-ready foundation for your site.', 'elementor' ); __( 'You can switch your theme anytime.', 'elementor' ); __( 'Every site starts with a theme.', 'elementor' ); __( 'Hello Biz by Elementor helps you launch your professional business website - fast.', 'elementor' ); __( 'Here\'s why:', 'elementor' ); __( 'Get online faster', 'elementor' ); __( 'Lightweight and fast loading', 'elementor' ); __( 'Great for SEO', 'elementor' ); __( 'Blank Canvas', 'elementor' ); __( 'Blank Canvas', 'elementor' ); __( 'Blank Canvas', 'elementor' ); __( 'Create New Elementor Page', 'elementor' ); __( 'Based on the features you chose, we recommend the %s plan, or higher', 'elementor' ); __( 'How would you like to create your website?', 'elementor' ); __( 'Click here to go to Elementor\'s Website Templates', 'elementor' ); __( 'Choose a professionally-designed template or import your own', 'elementor' ); __( 'Click here to go to Elementor\'s Site Planner', 'elementor' ); __( 'Create a professional site in minutes using AI', 'elementor' ); __( 'All set! Choose how to start', 'elementor' ); __( 'Click here to create a new page and open it in Elementor Editor', 'elementor' ); __( 'Blank Canvas', 'elementor' ); __( 'Start from scratch with the Elementor Editor', 'elementor' ); __( 'Click here to go to Elementor\'s Website Templates', 'elementor' ); __( 'Website Templates', 'elementor' ); __( 'Choose professionally-designed templates or import your own', 'elementor' ); __( 'Click here to go to Elementor\'s Site Planner', 'elementor' ); __( 'AI Site Planner', 'elementor' ); __( 'Get a head start with AI-powered site planning', 'elementor' ); __( 'You can switch your method anytime', 'elementor' ); __( 'Welcome aboard! What\'s next?', 'elementor' ); __( 'That\'s a wrap! What\'s next?', 'elementor' ); __( 'There are three ways to get started with Elementor:', 'elementor' ); __( 'Click here to create a new page and open it in Elementor Editor', 'elementor' ); __( 'Edit a blank canvas with the Elementor Editor', 'elementor' ); __( 'Click here to go to Elementor\'s Website Templates', 'elementor' ); __( 'Choose a professionally-designed template or import your own', 'elementor' ); __( 'Click here to go to Elementor\'s Site Planner', 'elementor' ); __( 'Create a professional site in minutes using AI', 'elementor' ); __( 'Pro is now active! You can continue.', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Upgrade Now', 'elementor' ); __( 'Ready to Get Elementor Pro?', 'elementor' ); __( '90+ Basic & Pro widgets', 'elementor' ); __( '300+ Basic & Pro templates', 'elementor' ); __( 'Premium Support', 'elementor' ); __( 'And so much more!', 'elementor' ); __( 'Already have Elementor Pro?', 'elementor' ); __( 'Welcome!', 'elementor' ); __( 'Connect your account to enable your full creative workspace', 'elementor' ); __( 'Access beautiful templates, ready-made blocks, and a single dashboard to manage all your sites in one place', 'elementor' ); __( 'Connect your account', 'elementor' ); __( 'Continue as a guest', 'elementor' ); __( 'You\'re here!', 'elementor' ); __( 'You\'re here! Let\'s set things up.', 'elementor' ); __( ' Let\'s get connected.', 'elementor' ); __( 'Categories', 'elementor' ); __( 'Tags', 'elementor' ); __( 'Features', 'elementor' ); __( 'Plan', 'elementor' ); __( 'Free', 'elementor' ); __( 'Pro', 'elementor' ); __( 'Advanced', 'elementor' ); __( 'Expert', 'elementor' ); __( 'Agency', 'elementor' ); __( 'Free', 'elementor' ); __( 'Essential', 'elementor' ); __( 'Advanced & Higher', 'elementor' ); __( 'Free', 'elementor' ); __( 'Essential', 'elementor' ); __( 'Advanced', 'elementor' ); __( 'My Website Templates', 'elementor' ); __( 'My Website Templates', 'elementor' ); __( 'Connect', 'elementor' ); __( 'My Website Templates', 'elementor' ); __( 'Upgrade', 'elementor' ); __( 'All Website Templates', 'elementor' ); __( 'Favorites', 'elementor' ); __( 'Pages', 'elementor' ); __( 'Site Parts', 'elementor' ); __( 'Popups', 'elementor' ); __( 'Search %s...', 'elementor' ); __( 'No Results Found', 'elementor' ); __( 'Sort Descending', 'elementor' ); __( 'Sort Ascending', 'elementor' ); __( 'Clear', 'elementor' ); __( 'Website template storage is full.', 'elementor' ); __( 'Get more space ', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Website template storage is %1$s%% full.', 'elementor' ); __( 'Get more space ', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'or', 'elementor' ); __( 'Dismiss notification', 'elementor' ); __( 'of', 'elementor' ); __( 'To get more space', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Upgrade', 'elementor' ); __( 'View Demo', 'elementor' ); __( 'Delete', 'elementor' ); __( 'Your library is currently over the new quota. Upgrade your plan within 90 days to keep all website templates', 'elementor' ); __( 'Actions', 'elementor' ); __( 'Your library is currently over the new quota. Upgrade your plan within 90 days to keep all website templates', 'elementor' ); __( 'Apply', 'elementor' ); __( 'Delete this Website Template?', 'elementor' ); __( 'Removing "%s" will permanently delete this website template from your library.', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Delete', 'elementor' ); __( 'You\'ve already applied a Website Templates.', 'elementor' ); __( 'Applying two Website Templates on the same website will mix global styles and colors and hurt your site\'s performance.', 'elementor' ); __( 'Remove the existing Website Template before applying a new one.', 'elementor' ); __( 'Remove existing', 'elementor' ); __( 'Apply anyway', 'elementor' ); __( 'Apply', 'elementor' ); __( 'Apply', 'elementor' ); __( 'Something went wrong.', 'elementor' ); __( 'Something went wrong.', 'elementor' ); __( 'Download Website', 'elementor' ); __( 'Download Website ZIP', 'elementor' ); __( 'Go to the pages screen to make sure your kit pages have been imported successfully. If not, try again.', 'elementor', ) } approveButtonText={ __( 'Go to pages', 'elementor' ); __( 'Got it', 'elementor' ); _n( 'Showing %s result for', 'Showing %s results for', props.resultCount, 'elementor' ); __( 'no', 'elementor' ); __( 'Remove', 'elementor' ); __( 'Clear all', 'elementor' ); __( 'Remove from Favorites', 'elementor' ); __( 'Add to Favorites', 'elementor' ); __( 'Looking for more Website Templates?', 'elementor' ); __( 'Check out Elementor Website Templates on ThemeForest', 'elementor' ); __( 'Unable to connect', 'elementor' ); __( 'Connect to Template Library', 'elementor' ); __( 'Access this template and our entire library by creating a free personal account', 'elementor' ); __( 'Get Started', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Apply %s?', 'elementor' ); __( 'You can use everything in this kit, or Customize to only include some items.', 'elementor' ); __( 'By applying the entire kit, you\'ll override any styles, settings or content already on your site.', 'elementor' ); __( 'Apply All', 'elementor' ); __( 'Customize', 'elementor' ); __( 'No import sessions available to revert.', 'elementor' ); __( 'Are you sure?', 'elementor' ); __( "Removing %s will permanently delete changes made to the Website Template's content and site settings", 'elementor', ).replace( '%s', activeKitName ), strings: { confirm: __( 'Delete', 'elementor' ); __( 'Cancel', 'elementor' ); __( '%s was successfully deleted', 'elementor' ); __( 'Try a different Website Template or build your site from scratch.', 'elementor', ), strings: { confirm: __( 'OK', 'elementor' ); __( 'Library', 'elementor' ); __( "You're ready to apply a new Kit!", 'elementor' ); __( 'Continue to new Kit', 'elementor' ); __( 'Close', 'elementor' ); __( 'Your Kit', 'elementor' ); __( 'Your Kit', 'elementor' ); __( 'Content', 'elementor' ); __( 'Elementor Pages', 'elementor' ); __( 'Elementor Posts', 'elementor' ); __( 'WP Pages', 'elementor' ); __( 'WP Posts', 'elementor' ); __( 'WP Menus', 'elementor' ); __( 'Custom Post Types', 'elementor' ); __( 'Templates', 'elementor' ); __( 'Saved Templates', 'elementor' ); __( 'Headers', 'elementor' ); __( 'Footers', 'elementor' ); __( 'Archives', 'elementor' ); __( 'Single Posts', 'elementor' ); __( 'Single Pages', 'elementor' ); __( 'Search Results', 'elementor' ); __( '404 Error Page', 'elementor' ); __( 'Popups', 'elementor' ); __( 'Global widgets', 'elementor' ); __( 'To import or export these components, you’ll need Elementor Pro.', 'elementor' ); __( 'Settings & configurations', 'elementor' ); __( 'Global Colors', 'elementor' ); __( 'Global Fonts', 'elementor' ); __( 'Theme Style Settings', 'elementor' ); __( 'Layout Settings', 'elementor' ); __( 'Lightbox Settings', 'elementor' ); __( 'Background Settings', 'elementor' ); __( 'Custom Fonts', 'elementor' ); __( 'Icons', 'elementor' ); __( 'Code', 'elementor' ); __( 'Plugins', 'elementor' ); __( 'All plugins are required for this website templates to work', 'elementor' ); __( 'Import', 'elementor' ); __( 'Export', 'elementor' ); __( 'Elementor Account', 'elementor' ); __( 'Choose Theme', 'elementor' ); __( 'Hello Biz Theme', 'elementor' ); __( 'Choose Features', 'elementor' ); __( 'Site Name', 'elementor' ); __( 'Site Logo', 'elementor' ); __( 'Start Creating Site', 'elementor' ); __( 'Good to Go', 'elementor' ); __( 'Create Account', 'elementor' ); __( 'My Elementor', 'elementor' ); __( 'Upgrade', 'elementor' ); __( 'Getting Started', 'elementor' ); __( 'Elementor Logo', 'elementor' ); __( 'Desktop', 'elementor' ); __( 'Tablet', 'elementor' ); __( 'Mobile', 'elementor' ); __( 'Overview', 'elementor' ); __( 'Kit Library', 'elementor' ); __( 'Loading...', 'elementor' ); __( 'View Demo', 'elementor' ); __( 'Kit Library', 'elementor' ); __( 'Loading...', 'elementor' ); __( 'WHAT\'S INSIDE', 'elementor' ); __( 'View Demo', 'elementor' ); __( 'Website Templates', 'elementor' ); __( 'Featured', 'elementor' ); __( 'New', 'elementor' ); __( 'Popular', 'elementor' ); __( 'Trending', 'elementor' ); __( 'Search all Website Templates...', 'elementor' ); __( 'Something went wrong.', 'elementor' ); __( 'Nothing to worry about, use 🔄 on the top corner to try again. If the problem continues, head over to the Help Center.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'No results matched your search.', 'elementor' ); __( 'Try different keywords or ', 'elementor' ); __( 'Continue browsing.', 'elementor' ); __( 'Info', 'elementor' ); __( 'Refetch', 'elementor' ); __( 'Import', 'elementor' ); __( 'Import Website Template', 'elementor' ); __( 'Welcome to the Library', 'elementor' ); __( 'What\'s a Website Template?', 'elementor' ); __( 'A Website Template is full, ready-made design that you can apply to your site. It includes all the pages, parts, settings and content that you\'d expect in a fully functional website.', 'elementor' ); __( 'What\'s going on in the Website Templates Library?', 'elementor' ); __( 'Search & filter for website templates by category and tags, or browse through individual website templates to see what\'s inside.', 'elementor' ); __( 'Once you\'ve picked a winner, apply it to your site!', 'elementor' ); __( 'Happy browsing!', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'about using templates', 'elementor' ); __( 'No favorites here yet...', 'elementor' ); __( 'Use the heart icon to save Website Templates that inspire you. You\'ll be able to find them here.', 'elementor' ); __( 'Continue browsing.', 'elementor' ); __( 'Access Website Templates with a plan upgrade', 'elementor' ); __( 'Your current plan doesn\'t include saving and importing Website Templates. Upgrade to the Advanced plan or higher to use this feature.', 'elementor' ); __( 'Compare plans', 'elementor' ); __( 'It\'s time to level up', 'elementor' ); __( 'Upgrade to Elementor Pro to import your own website template and save templates that you can reuse on any of your connected websites.', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Your library has been deactivated', 'elementor' ); __( 'Your subscription is currently deactivated, but you still have a 90 day window to keep all your templates safe. Upgrade within this time to continue enjoying them without interruption.', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Website Templates', 'elementor' ); __( 'Search my Website Templates...', 'elementor' ); __( 'Something went wrong.', 'elementor' ); __( 'Nothing to worry about, use 🔄 on the top corner to try again. If the problem continues, head over to the Help Center.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'No Website Templates found for your search', 'elementor' ); __( 'Try different keywords or ', 'elementor' ); __( 'Continue browsing.', 'elementor' ); __( 'No Website Templates to show here yet', 'elementor' ); __( "Once you export a Website to the cloud, you'll find it here and be able to use it on all your sites.", 'elementor' ); __( 'Export this site', 'elementor' ); __( 'Website Templates', 'elementor' ); __( 'Back to Library', 'elementor' ); __( 'You’re using an older Elementor version. Update for full customization.', 'elementor' ); __( 'Update version', 'elementor' ); __( 'This website template was exported from an older version of Elementor. If possible, re-export it with the latest version for better capabilities.', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Edit settings & configurations', 'elementor' ); __( 'Theme', 'elementor' ); __( 'Theme', 'elementor' ); __( 'Only public WordPress themes are supported', 'elementor' ); __( 'Version', 'elementor' ); __( 'Version', 'elementor' ); __( 'Edit plugins', 'elementor' ); __( 'Plugin name and version', 'elementor' ); __( 'All plugins', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Save changes', 'elementor' ); __( 'This feature requires Elementor Pro', 'elementor' ); __( 'Upgrade', 'elementor' ); __( 'Edit', 'elementor' ); __( 'Edit', 'elementor' ); __( 'Not exported', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Save changes', 'elementor' ); __( 'Link to media', 'elementor' ); __( 'Stores only the URLs. The export stays light, but files load only while the original site is online.', 'elementor' ); __( 'Save media to the cloud', 'elementor' ); __( 'All images and files are stored with the template. Keeps everything intact, but the file is larger.', 'elementor' ); __( 'Media format', 'elementor' ); __( 'Note:', 'elementor' ); __( 'The media will be uploaded automatically, just as it was saved during export', 'elementor' ); __( 'Select how do you want to save & export the media files.', 'elementor' ); __( 'Media format', 'elementor' ); __( 'Note:', 'elementor' ); __( 'To export a ZIP, go to Edit Content, choose \'Link to Media\', then Export as ZIP.', 'elementor' ); __( 'Or, save this template to the cloud instead.', 'elementor' ); __( 'Edit content', 'elementor' ); __( 'Custom post types', 'elementor' ); __( 'Custom post types', 'elementor' ); __( 'Not exported', 'elementor' ); __( 'All', 'elementor-pro' ); __( 'Show less', 'elementor' ); __( 'Show more', 'elementor' ); __( 'What\'s included:', 'elementor' ); __( 'Import', 'elementor' ); __( 'Settings up your website templates...', 'elementor' ); __( 'This usually take a few moments.', 'elementor' ); __( 'Don\'t close this window until the process is finished.', 'elementor' ); __( 'Import', 'elementor' ); __( 'Import a website template', 'elementor' ); __( 'Upload a file with templates, site settings, content, etc., and apply them to your site ', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Import', 'elementor' ); __( 'Back', 'elementor' ); __( 'Import and apply', 'elementor' ); __( 'Select which parts you want to apply', 'elementor' ); __( 'These are the templates, content and site settings that come with your website templates.', 'elementor' ); __( 'All items are already selected by default. Uncheck the ones you don\'t want.', 'elementor' ); __( 'No templates imported', 'elementor' ); __( 'No templates imported', 'elementor' ); __( 'No content imported', 'elementor' ); __( 'Taxonomies', 'elementor' ); __( 'Taxonomy', 'elementor' ); __( 'Menus', 'elementor' ); __( 'Menu', 'elementor' ); __( 'No content imported', 'elementor' ); __( 'No plugins imported', 'elementor' ); __( 'No settings imported', 'elementor' ); __( 'No settings imported', 'elementor' ); __( 'Content', 'elementor' ); __( 'Templates', 'elementor' ); __( 'Site settings', 'elementor' ); __( 'Plugins', 'elementor' ); __( 'See it Live', 'elementor' ); __( 'Close', 'elementor' ); __( 'Import', 'elementor' ); __( 'Kit is live illustration', 'elementor' ); __( 'Your website templates is now live on your site!', 'elementor' ); __( 'You\'ve imported and applied the following to your site:', 'elementor' ); __( 'Build sites faster with Website Templates.', 'elementor' ); __( 'Show me how', 'elementor' ); __( 'This file type is not allowed', 'elementor' ); __( 'This file type is not allowed', 'elementor' ); __( 'Activating plugins:', 'elementor' ); __( 'Try Again', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Upload a .zip file', 'elementor' ); __( 'Click to upload', 'elementor' ); __( 'or drag and drop', 'elementor' ); __( 'Must add a website template name', 'elementor' ); __( 'Use characters only', 'elementor' ); __( 'Description exceeds 300 characters', 'elementor' ); __( 'Setting up your website template...', 'elementor' ); __( 'Processing media files...', 'elementor' ); __( 'Export failed', 'elementor' ); __( 'Export', 'elementor' ); __( 'Export', 'elementor' ); __( 'View in Library', 'elementor' ); __( 'Done', 'elementor' ); __( 'Export', 'elementor' ); __( 'No templates exported', 'elementor' ); __( 'No templates exported', 'elementor' ); __( 'No content exported', 'elementor' ); __( 'Taxonomies', 'elementor' ); __( 'No content exported', 'elementor' ); __( 'No plugins exported', 'elementor' ); __( 'No settings exported', 'elementor' ); __( 'No settings exported', 'elementor' ); __( 'Content', 'elementor' ); __( 'Templates', 'elementor' ); __( 'Site settings', 'elementor' ); __( 'Plugins', 'elementor' ); __( 'Your website template is now saved to the library!', 'elementor' ); __( 'Your .zip file is ready', 'elementor' ); __( 'You can find it in the My Website Templates tab.', 'elementor' ); __( 'Once the download is complete, you can upload it to be used for other sites.', 'elementor' ); __( 'Take me there', 'elementor' ); __( 'Is the automatic download not starting?', 'elementor' ); __( 'Download manually', 'elementor' ); __( 'Website template name', 'elementor' ); __( 'Type name here...', 'elementor' ); __( 'Description (Optional)', 'elementor' ); __( 'Type description here...', 'elementor' ); __( 'characters', 'elementor' ); __( 'This usually takes a few moments.', 'elementor' ); __( 'Don\'t close this window until the process is finished.', 'elementor' ); __( 'Save to library', 'elementor' ); __( 'Save to library', 'elementor' ); __( 'Save to library', 'elementor' ); __( 'Save to library', 'elementor' ); __( 'Export as .zip', 'elementor' ); __( 'Export a Website template?', 'elementor' ); __( 'Choose which Elementor components - templates, content and site settings - to include in your website templates file. By default, all of your components will be exported.', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Couldn’t handle the Website Template', 'elementor' ); __( 'Seems like your server is missing the PHP zip module. Install it on your server or contact your site host for further instructions.', 'elementor' ); __( 'Couldn’t use the .zip file', 'elementor' ); __( 'Seems like there is a problem with the zip’s files. Try installing again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'It took too much time to download your Website Template and we were unable to complete the process. If all the Website Template’s parts don’t appear in ', 'elementor' ); __( 'Pages', 'elementor' ); __( ', try again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'We couldn’t download the Website Template due to technical difficulty on our part. Try again in a few minutes and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Couldn’t access the file', 'elementor' ); __( 'Seems like Elementor isn’t authorized to access relevant files for installing this Website Template. Contact your site host to get permission.', 'elementor' ); __( 'Couldn’t install the Website Template', 'elementor' ); __( 'The Website Template includes plugins you don’t have permission to install. Contact your site admin to change your permissions.', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'This is due to a conflict with one or more third-party plugins already active on your site. Try disabling them, and then give the download another go.', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'This download requires the \'DOMDocument\' PHP extension, which we couldn’t detect on your server. Enable this extension, or get in touch with your hosting service for support, and then give the download another go.', 'elementor' ); __( 'Couldn’t Export the Website Template', 'elementor' ); __( 'The export failed because it will pass the maximum Website Templates you can export.', 'elementor' ); __( 'Couldn’t fetch quota', 'elementor' ); __( 'Failed to fetch quota.', 'elementor' ); __( 'Couldn’t Export the Website Template', 'elementor' ); __( 'The export failed because it will pass the maximum Website Templates storage you have available.', 'elementor' ); __( 'Try Again', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Close', 'elementor' ); __( 'Templates', 'elementor' ); __( 'Saved Templates', 'elementor' ); __( 'Headers', 'elementor' ); __( 'Footers', 'elementor' ); __( 'Archives', 'elementor' ); __( 'Single Posts', 'elementor' ); __( 'Single Pages', 'elementor' ); __( 'Search Results', 'elementor' ); __( '404 Error Page', 'elementor' ); __( 'Popups', 'elementor' ); __( 'Global widgets', 'elementor' ); __( 'To import or export these components, you’ll need Elementor Pro.', 'elementor' ); __( 'Content', 'elementor' ); __( 'Elementor Pages', 'elementor' ); __( 'Landing Pages', 'elementor' ); __( 'Elementor Posts', 'elementor' ); __( 'WP Pages', 'elementor' ); __( 'WP Posts', 'elementor' ); __( 'WP Menus', 'elementor' ); __( 'Custom Post Types', 'elementor' ); __( 'Site Settings', 'elementor' ); __( 'Global Colors', 'elementor' ); __( 'Global Fonts', 'elementor' ); __( 'Theme Style settings', 'elementor' ); __( 'Layout Settings', 'elementor' ); __( 'Lightbox Settings', 'elementor' ); __( 'Background Settings', 'elementor' ); __( 'Site Area', 'elementor' ); __( 'Included', 'elementor' ); __( 'Elementor Templates', 'elementor' ); __( 'Site Settings', 'elementor' ); __( 'Content', 'elementor' ); __( 'Plugins', 'elementor' ); __( 'Kit Info', 'elementor' ); __( 'Import a Website Template', 'elementor' ); __( 'What’s a Website Template?', 'elementor' ); __( 'A Website Template is a .zip file that contains all the parts of a complete site. It’s an easy way to get a site up and running quickly.', 'elementor' ); __( ' Learn more about Website Templates', 'elementor' ); __( 'How does importing work?', 'elementor' ); __( 'Start by uploading the file and selecting the parts and plugins you want to apply. If there are any overlaps between the kit and your current design, you’ll be able to choose which imported parts you want to apply or ignore. Once the file is ready, the kit will be applied to your site and you’ll be able to see it live.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Export a Website Kit', 'elementor' ); __( 'What’s a Website Kit?', 'elementor' ); __( 'A Website Kit is a .zip file that contains all the parts of a complete site. It’s an easy way to get a site up and running quickly.', 'elementor' ); __( ' Learn more about Website Kits', 'elementor' ); __( 'How does exporting work?', 'elementor' ); __( 'To turn your site into a Website Kit, select the templates, content, settings and plugins you want to include. Once it’s ready, you’ll get a .zip file that you can import to other sites.', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Setting up your website template...', 'elementor' ); __( 'This usually takes a few moments.', 'elementor' ); __( "Don't close this window until the process is finished.", 'elementor' ); __( 'Custom Post Type', 'elementor' ); __( 'Click to select custom post types', 'elementor' ); __( 'No custom post types in your site...', 'elementor' ); __( 'Add the custom posts types to export. The latest 20 items from each type will be included.', 'elementor' ); __( 'Export', 'elementor' ); __( 'Close', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Couldn’t handle the Website Template', 'elementor' ); __( 'Seems like your server is missing the PHP zip module. Install it on your server or contact your site host for further instructions.', 'elementor' ); __( 'Couldn’t use the .zip file', 'elementor' ); __( 'Seems like there is a problem with the zip’s files. Try installing again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'It took too much time to download your Website Template and we were unable to complete the process. If all the Website Template’s parts don’t appear in ', 'elementor' ); __( 'Pages', 'elementor' ); __( ', try again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'We couldn’t download the Website Template due to technical difficulty on our part. Try again in a few minutes and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Couldn’t access the file', 'elementor' ); __( 'Seems like Elementor isn’t authorized to access relevant files for installing this Website Template. Contact your site host to get permission.', 'elementor' ); __( 'Couldn’t install the Website Template', 'elementor' ); __( 'The Website Template includes plugins you don’t have permission to install. Contact your site admin to change your permissions.', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'This is due to a conflict with one or more third-party plugins already active on your site. Try disabling them, and then give the download another go.', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'This download requires the \'DOMDocument\' PHP extension, which we couldn’t detect on your server. Enable this extension, or get in touch with your hosting service for support, and then give the download another go.', 'elementor' ); __( 'Couldn’t Export the Website Template', 'elementor' ); __( 'The export failed because it will pass the maximum Website Templates you can export. ', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Couldn’t fetch quota', 'elementor' ); __( 'Failed to fetch quota, please try again. If the problem continues, contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Couldn’t Upload to Library', 'elementor' ); __( 'We couldn’t add your export to the library. Try again. ', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Unable to download the Website Template', 'elementor' ); __( 'We couldn’t download the Website Template due to technical difficulties on our part. Try again and if the problem persists contact ', 'elementor' ); __( 'Support', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Couldn’t save media files to the cloud', 'elementor' ); __( 'We ran into a problem while saving your media files to the cloud. Please try again. If the issue persists, edit the Content section and choose "Link to media" to save it as a reference. ', 'elementor' ); __( 'Learn more', 'elementor' ); __( 'Your library is full', 'elementor' ); __( 'This file', 'elementor' ); __( '%s exceeds the library size limit', 'elementor' ); __( 'The maximum website template library size is %s GB. To save this file, you can either export it locally as a .zip file or get more storage by ', 'elementor' ); __( 'Upgrade now', 'elementor' ); __( 'Cancel', 'elementor' ); __( 'Export as .zip', 'elementor' ); __( 'Try Again', 'elementor' ); __( 'Version' ) } ${ cellLinkProps.text }` } ); const getHeaders = () => { if ( ! withHeader ) { return []; } const headers = [ 'Plugin Name', 'Version' ]; if ( withStatus ) { headers.splice( 1, 0, 'Status' ); __( 'Learn More', 'elementor' ); __( 'Select which plugins to export', 'elementor' ); __( 'Your Website Template may not work as expected if key plugins are missing.', 'elementor' ); __( 'By default, we’ll include everything in your file. Uncheck the items you don\'t want.', 'elementor' ); __( 'Next', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Select which items to export', 'elementor' ); __( 'You can export the content, site settings, and templates as a Website Template to be reused in the future.', 'elementor' ); __( 'Uncheck the items you don\'t want to include.', 'elementor' ); __( 'Open library', 'elementor' ); __( 'Done', 'elementor' ); __( 'Download manually', 'elementor' ); __( 'Show me how', 'elementor' ); __( 'Take me there', 'elementor' ); __( 'Your website template is now saved to the library!', 'elementor' ); __( 'Your .zip file is ready', 'elementor' ); __( 'You can find it in the My Website Templates tab.', 'elementor' ); __( 'Once the download is complete, you can upload it to be used for other sites.', 'elementor' ); __( 'Build sites faster with Website Templates.', 'elementor' ); __( 'Is the automatic download not starting?', 'elementor' ); __( 'Activating plugins:', 'elementor' ); __( 'Select which plugins to include', 'elementor' ); __( 'All items are already selected by default. Uncheck the ones you don\'t want.', 'elementor' ); __( ' Recommended:', 'elementor' ); __( 'Head over to Updates and make sure that your plugins are updated to the latest version.', 'elementor' ); __( 'Take me there', 'elementor' ); __( 'Learn More', 'elementor' ); __( 'Back to Website Templates', 'elementor' ); __( 'Import a Website Template', 'elementor' ); __( 'Upload a .zip file with style, site settings, content, etc. Then, we’ll apply them to your site.', 'elementor' ); __( 'Heads up!', 'elementor' ); __( 'Before applying a new template, we recommend backing up your site so you can roll back any undesired changes.', 'elementor' ); __( 'Choose a file to import', 'elementor' ); __( 'Drag & drop the .zip file with your website template', 'elementor' ); __( 'Import from files' ) } /> { dialog.isOpen && __( 'Primary Menu', 'panoramic' ), 'footer' => __( 'Footer Menu', 'panoramic' ) ) ); /* * Switch default core markup for search form, comment form, and comments * to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list', 'gallery', 'caption', 'navigation-widgets' ) ); /* * Enable support for Post Formats. * See http://codex.wordpress.org/Post_Formats */ add_theme_support( 'post-formats', array( 'aside', 'image', 'video', 'quote', 'link', ) ); /* * Setup Custom Logo Support for theme * Supported from WordPress version 4.5 onwards * More Info: https://make.wordpress.org/core/2016/03/10/custom-logo/ */ if ( function_exists( 'has_custom_logo' ) ) { add_theme_support( 'custom-logo' ); } // The custom header is used if no slider is enabled add_theme_support( 'custom-header', array( 'default-image' => get_template_directory_uri() . '/library/images/headers/default.jpg', 'width' => 1500, 'height' => 445, 'flex-width' => true, 'flex-height' => true, 'header-text' => false, ) ); // Set up the WordPress core custom background feature. add_theme_support( 'custom-background', apply_filters( 'panoramic_custom_background_args', array( 'default-color' => 'ffffff', 'default-image' => '', ) ) ); add_theme_support( 'title-tag' ); // Gutenberg Support add_theme_support( 'align-wide' ); // Toggle WordPress 5.8+ block-based widgets if ( !get_theme_mod( 'panoramic-gutenberg-enable-block-based-widgets', customizer_library_get_default( 'panoramic-gutenberg-enable-block-based-widgets' ) ) ) { remove_theme_support( 'widgets-block-editor' ); } add_theme_support( 'woocommerce', array( 'gallery_thumbnail_image_width' => 300 ) ); if ( get_theme_mod( 'panoramic-woocommerce-product-image-zoom', true ) ) { add_theme_support( 'wc-product-gallery-zoom' ); } add_theme_support( 'wc-product-gallery-lightbox' ); add_theme_support( 'wc-product-gallery-slider' ); add_theme_support( 'responsive-embeds' ); add_theme_support( 'custom-spacing' ); } endif; // panoramic_theme_setup add_action( 'after_setup_theme', 'panoramic_theme_setup' ); if ( ! function_exists( 'panoramic_fonts_url' ) ) : /** * Register custom fonts. */ function panoramic_fonts_url() { $fonts_url = ''; $font_families = array(); $font_families[] = 'Kaushan Script:400'; $font_families[] = 'Lato:300,300italic,400,400italic,600,600italic,700,700italic'; $font_families[] = 'Raleway:300,300italic,400,400italic,500,500italic,600,600italic,700,700italic'; $query_args = array( 'family' => urlencode( implode( '|', $font_families ) ), 'subset' => urlencode( 'latin,latin-ext' ), ); $fonts_url = add_query_arg( $query_args, 'https://fonts.googleapis.com/css' ); return esc_url_raw( $fonts_url ); } endif; /** * Enqueue admin scripts and styles. */ function panoramic_admin_scripts() { wp_enqueue_style( 'panoramic-admin', get_template_directory_uri() . '/library/css/admin.css', array(), PANORAMIC_THEME_VERSION ); wp_enqueue_script( 'panoramic-admin', get_template_directory_uri() . '/library/js/admin.js', PANORAMIC_THEME_VERSION, true ); } add_action( 'admin_enqueue_scripts', 'panoramic_admin_scripts' ); // Adjust content_width for full width pages function panoramic_adjust_content_width() { global $content_width; if ( panoramic_is_woocommerce_activated() && is_woocommerce() ) { $is_woocommerce = true; } else { $is_woocommerce = false; } if ( is_page_template( 'template-full-width.php' ) ) { $content_width = 1096; } else if ( ( is_page_template( 'template-left-sidebar.php' ) || basename( get_page_template() ) === 'page.php' ) && !is_active_sidebar( 'sidebar-1' ) ) { $content_width = 1096; } else if ( panoramic_is_woocommerce_activated() && is_shop() && get_theme_mod( 'panoramic-layout-woocommerce-shop-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-shop-full-width' ) ) ) { $content_width = 1096; } else if ( panoramic_is_woocommerce_activated() && is_product() && get_theme_mod( 'panoramic-layout-woocommerce-product-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-product-full-width' ) ) ) { $content_width = 1096; } else if ( panoramic_is_woocommerce_activated() && ( is_product_category() || is_product_tag() ) && get_theme_mod( 'panoramic-layout-woocommerce-category-tag-page-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-category-tag-page-full-width' ) ) ) { $content_width = 1096; } else if ( $is_woocommerce && !is_active_sidebar( 'sidebar-1' ) ) { $content_width = 1096; } } add_action( 'template_redirect', 'panoramic_adjust_content_width' ); function panoramic_review_notice() { $user_id = get_current_user_id(); $message = 'Thank you for using Panoramic! We hope you\'re enjoying the theme, please consider rating it on wordpress.org :)'; if ( !get_user_meta( $user_id, 'panoramic_review_notice_dismissed' ) ) { $class = 'notice notice-success is-dismissible'; printf( '', esc_attr( $class ), $message ); } } $today = new DateTime( date( 'Y-m-d' ) ); $activate = new DateTime( date( get_theme_mod( 'otb_panoramic_activated' ) ) ); if ( $activate->diff($today)->d >= 14 ) { add_action( 'admin_notices', 'panoramic_review_notice' ); } function panoramic_review_notice_dismissed() { $user_id = get_current_user_id(); if ( isset( $_GET['panoramic-review-notice-dismissed'] ) ) { add_user_meta( $user_id, 'panoramic_review_notice_dismissed', 'true', true ); } } add_action( 'admin_init', 'panoramic_review_notice_dismissed' ); function panoramic_admin_notice() { $user_id = get_current_user_id(); $message = array ( 'id' => 17, 'heading' => 'Christmas Sale', 'text' => '🎄Get 20% off any of our Premium WordPress themes until Christmas Day!🎄', 'link' => 'https://www.outtheboxthemes.com/go/theme-notification-christmas-day-2022-wordpress-themes/' ); if ( !empty( $message['text'] ) && !get_user_meta( $user_id, 'panoramic_admin_notice_' .$message['id']. '_dismissed' ) ) { $class = 'notice otb-notice notice-success is-dismissible'; printf( '', esc_attr( $class ), $message['heading'], $message['text'], $message['link'], $message['id'] ); } } if ( date('Y-m-d') <= '2022-12-25' ) { add_action( 'admin_notices', 'panoramic_admin_notice' ); } function panoramic_admin_notice_dismissed() { $user_id = get_current_user_id(); if ( isset( $_GET['panoramic-admin-notice-dismissed'] ) ) { $panoramic_admin_notice_id = $_GET['panoramic-admin-notice-id']; add_user_meta( $user_id, 'panoramic_admin_notice_' .$panoramic_admin_notice_id. '_dismissed', 'true', true ); } } add_action( 'admin_init', 'panoramic_admin_notice_dismissed' ); /** * Register widget area. * * @link http://codex.wordpress.org/Function_Reference/register_sidebar */ function panoramic_widgets_init() { register_sidebar( array( 'name' => __( 'Sidebar', 'panoramic' ), 'id' => 'sidebar-1', 'description' => '', 'before_widget' => '', 'before_title' => '

', 'after_title' => '

' ) ); register_sidebar(array( 'name' => __( 'Footer', 'panoramic' ), 'id' => 'footer', 'description' => '' )); } add_action( 'widgets_init', 'panoramic_widgets_init' ); /** * Enqueue scripts and styles. */ function panoramic_theme_scripts() { wp_enqueue_style( 'panoramic-fonts', panoramic_fonts_url(), array(), PANORAMIC_THEME_VERSION ); if ( get_theme_mod( 'panoramic-header-layout', 'panoramic-header-layout-standard' ) == 'panoramic-header-layout-centered' ) { wp_enqueue_style( 'panoramic-header-centered', get_template_directory_uri().'/library/css/header-centered.css', array(), PANORAMIC_THEME_VERSION ); } else { wp_enqueue_style( 'panoramic-header-standard', get_template_directory_uri().'/library/css/header-standard.css', array(), PANORAMIC_THEME_VERSION ); } wp_enqueue_style( 'otb-font-awesome-otb-font-awesome', get_template_directory_uri().'/library/fonts/otb-font-awesome/css/otb-font-awesome.css', array(), '4.7.0' ); wp_enqueue_style( 'otb-font-awesome-font-awesome-min', get_template_directory_uri().'/library/fonts/otb-font-awesome/css/font-awesome.min.css', array(), '4.7.0' ); wp_enqueue_style( 'panoramic-style', get_stylesheet_uri(), array(), PANORAMIC_THEME_VERSION ); if ( panoramic_is_woocommerce_activated() ) { wp_enqueue_style( 'panoramic-woocommerce-custom', get_template_directory_uri().'/library/css/woocommerce-custom.css', array(), PANORAMIC_THEME_VERSION ); } wp_enqueue_script( 'panoramic-navigation', get_template_directory_uri() . '/library/js/navigation.js', array(), PANORAMIC_THEME_VERSION, true ); wp_enqueue_script( 'panoramic-caroufredsel', get_template_directory_uri() . '/library/js/jquery.carouFredSel-6.2.1-packed.js', array('jquery'), PANORAMIC_THEME_VERSION, true ); wp_enqueue_script( 'panoramic-touchswipe', get_template_directory_uri() . '/library/js/jquery.touchSwipe.min.js', array('jquery'), PANORAMIC_THEME_VERSION, true ); wp_enqueue_script( 'panoramic-custom', get_template_directory_uri() . '/library/js/custom.js', array('jquery'), PANORAMIC_THEME_VERSION, true ); $variables = array( 'sliderTransitionSpeed' => intval( get_theme_mod( 'panoramic-slider-transition-speed', customizer_library_get_default( 'panoramic-slider-transition-speed' ) ) ) ); wp_localize_script( 'panoramic-custom', 'variables', $variables ); wp_enqueue_script( 'panoramic-skip-link-focus-fix', get_template_directory_uri() . '/library/js/skip-link-focus-fix.js', array(), PANORAMIC_THEME_VERSION, true ); if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) { wp_enqueue_script( 'comment-reply' ); } } add_action( 'wp_enqueue_scripts', 'panoramic_theme_scripts' ); function panoramic_set_elementor_default_schemes( $config ) { // Primary $config['schemes']['items']['color']['items']['1']['value'] = get_theme_mod( 'panoramic-heading-font-color', customizer_library_get_default( 'panoramic-heading-font-color' ) ); // Secondary $config['schemes']['items']['color']['items']['2']['value'] = get_theme_mod( 'panoramic-primary-color', customizer_library_get_default( 'panoramic-primary-color' ) ); // Text $config['schemes']['items']['color']['items']['3']['value'] = get_theme_mod( 'panoramic-body-font-color', customizer_library_get_default( 'panoramic-body-font-color' ) ); // Accent $config['schemes']['items']['color']['items']['4']['value'] = get_theme_mod( 'panoramic-primary-color', customizer_library_get_default( 'panoramic-primary-color' ) ); // Primary Headline $config['schemes']['items']['typography']['items']['1']['value'] = [ 'font-family' => get_theme_mod( 'panoramic-heading-font', customizer_library_get_default( 'panoramic-heading-font' ) ), //'font-weight' => get_theme_mod( 'panoramic-heading-font-weight', customizer_library_get_default( 'panoramic-heading-font-weight' ) ) 'font-weight' => '400' ]; // Secondary Headline $config['schemes']['items']['typography']['items']['2']['value'] = [ 'font-family' => get_theme_mod( 'panoramic-heading-font', customizer_library_get_default( 'panoramic-heading-font' ) ), //'font-weight' => get_theme_mod( 'panoramic-heading-font-weight', customizer_library_get_default( 'panoramic-heading-font-weight' ) ) 'font-weight' => '400' ]; // Body Text $config['schemes']['items']['typography']['items']['3']['value'] = [ 'font-family' => get_theme_mod( 'panoramic-body-font', customizer_library_get_default( 'panoramic-body-font' ) ), 'font-weight' => get_theme_mod( 'panoramic-body-font-weight', customizer_library_get_default( 'panoramic-body-font-weight' ) ) ]; // Accent Text $config['schemes']['items']['typography']['items']['4']['value'] = [ 'font-family' => get_theme_mod( 'panoramic-heading-font', customizer_library_get_default( 'panoramic-heading-font' ) ), //'font-weight' => get_theme_mod( 'panoramic-heading-font-weight', customizer_library_get_default( 'panoramic-heading-font-weight' ) ) 'font-weight' => '400' ]; $config['schemes']['items']['color-picker']['items']['1']['value'] = get_theme_mod( 'panoramic-primary-color', customizer_library_get_default( 'panoramic-primary-color' ) ); $config['schemes']['items']['color-picker']['items']['2']['value'] = get_theme_mod( 'panoramic-secondary-color', customizer_library_get_default( 'panoramic-secondary-color' ) ); $config['schemes']['items']['color-picker']['items']['3']['value'] = get_theme_mod( 'panoramic-body-font-color', customizer_library_get_default( 'panoramic-body-font-color' ) ); $config['schemes']['items']['color-picker']['items']['4']['value'] = get_theme_mod( 'panoramic-footer-color', customizer_library_get_default( 'panoramic-footer-color' ) ); $config['schemes']['items']['color-picker']['items']['5']['value'] = ''; $config['schemes']['items']['color-picker']['items']['6']['value'] = ''; $config['schemes']['items']['color-picker']['items']['7']['value'] = ''; $config['schemes']['items']['color-picker']['items']['8']['value'] = ''; return $config; }; add_filter('elementor/editor/localize_settings', 'panoramic_set_elementor_default_schemes', 100); /** * Load Gutenberg stylesheet. */ function panoramic_gutenberg_assets() { wp_enqueue_style( 'panoramic-gutenberg-editor', get_theme_file_uri( '/library/css/gutenberg-editor-style.css' ), false, PANORAMIC_THEME_VERSION ); // Output inline styles based on theme customizer selections require get_template_directory() . '/library/includes/gutenberg-editor-styles.php'; } add_action( 'enqueue_block_editor_assets', 'panoramic_gutenberg_assets' ); // Recommended plugins installer require_once get_template_directory() . '/library/includes/class-tgm-plugin-activation.php'; /** * Custom template tags for this theme. */ require get_template_directory() . '/library/includes/template-tags.php'; /** * Custom functions that act independently of the theme templates. */ require get_template_directory() . '/library/includes/extras.php'; /** * Customizer additions. */ require get_template_directory() . '/library/includes/customizer.php'; /** * Load Jetpack compatibility file. */ require get_template_directory() . '/library/includes/jetpack.php'; // Helper library for the theme customizer. require get_template_directory() . '/customizer/customizer-library/customizer-library.php'; // Define options for the theme customizer. require get_template_directory() . '/customizer/customizer-options.php'; // Output inline styles based on theme customizer selections. require get_template_directory() . '/customizer/styles.php'; // Additional filters and actions based on theme customizer selections. require get_template_directory() . '/customizer/mods.php'; // Include TRT Customize Pro library require_once( get_template_directory() . '/trt-customize-pro/class-customize.php' ); /** * Premium Upgrade Page */ if ( !class_exists( 'otb_theme_upgrader' ) ) { include get_template_directory() . '/upgrade/upgrade.php'; } /** * Enqueue panoramic custom customizer styling. */ function panoramic_load_customizer_script() { wp_enqueue_script( 'panoramic-customizer-custom', get_template_directory_uri() . '/customizer/customizer-library/js/customizer-custom.js', array('jquery'), PANORAMIC_THEME_VERSION, true ); $upgrade_button = array( 'link' => admin_url( 'themes.php?page=premium_upgrade' ), 'text' => __( 'Upgrade To Premium »', 'panoramic' ) ); wp_localize_script( 'panoramic-customizer-custom', 'upgrade_button', $upgrade_button ); wp_enqueue_style( 'panoramic-customizer', get_template_directory_uri() . '/customizer/customizer-library/css/customizer.css' ); } add_action( 'customize_controls_enqueue_scripts', 'panoramic_load_customizer_script' ); /** * Add a pingback url auto-discovery header for single posts, pages, or attachments. */ function panoramic_pingback_header() { if ( is_singular() && pings_open() ) { printf( '', esc_url( get_bloginfo( 'pingback_url' ) ) ); } } add_action( 'wp_head', 'panoramic_pingback_header' ); if ( ! function_exists( 'panoramic_load_dynamic_css' ) ) : /** * Add Dynamic CSS */ function panoramic_load_dynamic_css() { $panoramic_slider_has_min_width = get_theme_mod( 'panoramic-slider-has-min-width', customizer_library_get_default( 'panoramic-slider-has-min-width' ) ); $panoramic_slider_min_width = floatVal( get_theme_mod( 'panoramic-slider-min-width', customizer_library_get_default( 'panoramic-slider-min-width' ) ) ); // Activate the mobile menu when on a mobile device //if ( wp_is_mobile() ) { // $mobile_menu_breakpoint = 10000000; //} else { $mobile_menu_breakpoint = 960; //} require get_template_directory() . '/library/includes/dynamic-css.php'; } endif; add_action( 'wp_head', 'panoramic_load_dynamic_css' ); // Create function to check if WooCommerce exists. if ( ! function_exists( 'panoramic_is_woocommerce_activated' ) ) : function panoramic_is_woocommerce_activated() { if ( class_exists( 'woocommerce' ) ) { return true; } else { return false; } } endif; // panoramic_is_woocommerce_activated if ( panoramic_is_woocommerce_activated() ) { require get_template_directory() . '/library/includes/woocommerce-inc.php'; } // Add CSS class to body by filter function panoramic_add_body_class( $classes ) { if( wp_is_mobile() ) { $classes[] = 'mobile-device'; } if ( get_theme_mod( 'panoramic-media-crisp-images', customizer_library_get_default( 'panoramic-media-crisp-images' ) ) ) { $classes[] = 'crisp-images'; } if ( get_theme_mod( 'panoramic-content-links-have-underlines', customizer_library_get_default( 'panoramic-content-links-have-underlines' ) ) ) { $classes[] = 'content-links-have-underlines'; } if ( get_theme_mod( 'panoramic-page-builders-use-theme-styles', customizer_library_get_default( 'panoramic-page-builders-use-theme-styles' ) ) ) { $classes[] = 'panoramic-page-builders-use-theme-styles'; } if ( panoramic_is_woocommerce_activated() && is_shop() && get_theme_mod( 'panoramic-layout-woocommerce-shop-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-shop-full-width' ) ) ) { $classes[] = 'panoramic-shop-full-width'; } if ( panoramic_is_woocommerce_activated() && is_product() && get_theme_mod( 'panoramic-layout-woocommerce-product-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-product-full-width' ) ) ) { $classes[] = 'panoramic-product-full-width'; } if ( panoramic_is_woocommerce_activated() && ( is_product_category() || is_product_tag() ) && get_theme_mod( 'panoramic-layout-woocommerce-category-tag-page-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-category-tag-page-full-width' ) ) ) { $classes[] = 'panoramic-shop-full-width'; } if ( panoramic_is_woocommerce_activated() && is_woocommerce() ) { $is_woocommerce = true; } else { $is_woocommerce = false; } if ( $is_woocommerce && !is_active_sidebar( 'sidebar-1' ) ) { $classes[] = 'full-width'; } return $classes; } add_filter( 'body_class', 'panoramic_add_body_class' ); /** * Added for backwards compatibility to support pre 5.2.0 WordPress versions. */ if ( ! function_exists( 'wp_body_open' ) ) : /** * Fire the wp_body_open action. */ function wp_body_open() { /** * Triggered after the opening tag. */ do_action( 'wp_body_open' ); } endif; /* TODO: Remove the woocommerce_get_sidebar action on the product catalog if set to full width if ( panoramic_is_woocommerce_activated() && is_shop() && get_theme_mod( 'panoramic-layout-woocommerce-shop-full-width', customizer_library_get_default( 'panoramic-layout-woocommerce-shop-full-width' ) ) ) { remove_action( 'woocommerce_get_sidebar', 'action_woocommerce_get_sidebar', 10, 2 ); } */ add_action( 'woocommerce_before_shop_loop_item_title', function() { if ( get_theme_mod( 'panoramic-woocommerce-shop-display-thumbnail-loader-animation', customizer_library_get_default( 'panoramic-woocommerce-shop-display-thumbnail-loader-animation' ) ) ) { echo '
'; } }, 9 ); add_action( 'woocommerce_before_shop_loop_item_title', function() { if ( get_theme_mod( 'panoramic-woocommerce-shop-display-thumbnail-loader-animation', customizer_library_get_default( 'panoramic-woocommerce-shop-display-thumbnail-loader-animation' ) ) ) { echo '
'; } }, 11 ); // Set the number or products per page function panoramic_loop_shop_per_page( $cols ) { // $cols contains the current number of products per page based on the value stored on Options -> Reading // Return the number of products you wanna show per page. $cols = get_theme_mod( 'panoramic-woocommerce-products-per-page' ); return $cols; } add_filter( 'loop_shop_per_page', 'panoramic_loop_shop_per_page', 20 ); if (!function_exists('panoramic_woocommerce_product_thumbnails_columns')) { function panoramic_woocommerce_product_thumbnails_columns() { return 3; } } add_filter ( 'woocommerce_product_thumbnails_columns', 'panoramic_woocommerce_product_thumbnails_columns' ); /** * Replace Read more buttons for out of stock items */ // Display an Out of Stock label on out of stock products add_action( 'woocommerce_after_shop_loop_item_title', 'panoramic_out_of_stock_notice', 10 ); function panoramic_out_of_stock_notice() { global $product; if ( !$product->is_in_stock() ) { echo '

'; echo __( 'Out of Stock', 'panoramic' ); echo '

'; } } /* if (!function_exists('woocommerce_template_loop_add_to_cart')) { function woocommerce_template_loop_add_to_cart( $args = array() ) { global $product; if (!$product->is_in_stock()) { echo '

'; echo __( 'Out of Stock', 'panoramic' ); echo '

'; } else { $defaults = array( 'quantity' => 1, 'class' => implode( ' ', array_filter( array( 'button', 'product_type_' . $product->get_type(), $product->is_purchasable() && $product->is_in_stock() ? 'add_to_cart_button' : '', $product->supports( 'ajax_add_to_cart' ) ? 'ajax_add_to_cart' : '' ) ) ) ); $args = apply_filters( 'woocommerce_loop_add_to_cart_args', wp_parse_args( $args, $defaults ), $product ); wc_get_template( 'loop/add-to-cart.php', $args ); } } } */ function panoramic_excerpt_length( $length ) { if ( is_admin() || ( !is_home() && !is_category() && !is_tag() && !is_search() ) ) { return $length; } else { return intval( get_theme_mod( 'panoramic-blog-excerpt-length', customizer_library_get_default( 'panoramic-blog-excerpt-length' ) ) ); } } add_filter( 'excerpt_length', 'panoramic_excerpt_length', 999 ); if ( ! function_exists( 'panoramic_excerpt_more' ) ) { function panoramic_excerpt_more( $more ) { if ( is_admin() ) { return $more; } else { return ' ' . wp_kses_post( pll__( get_theme_mod( 'panoramic-blog-read-more-text', customizer_library_get_default( 'panoramic-blog-read-more-text' ) ) ) ) . ''; } } } add_filter( 'excerpt_more', 'panoramic_excerpt_more' ); /** * Adjust is_home query if panoramic-slider-categories is set */ function panoramic_set_blog_queries( $query ) { $slider_categories = get_theme_mod( 'panoramic-slider-categories', '' ); $slider_type = get_theme_mod( 'panoramic-slider-type', customizer_library_get_default( 'panoramic-slider-type' ) ); if ( $slider_categories != '' && $slider_type == 'panoramic-slider-default' ) { $is_front_page = ( $query->get('page_id') == get_option('page_on_front') || is_front_page() ); if ( count($slider_categories) > 0) { // do not alter the query on wp-admin pages and only alter it if it's the main query if ( !is_admin() && !$is_front_page || !is_admin() && $is_front_page && $query->get('id') != 'slider' ){ $query->set( 'category__not_in', $slider_categories ); } } } } add_action( 'pre_get_posts', 'panoramic_set_blog_queries' ); function panoramic_filter_recent_posts_widget_parameters( $params ) { $slider_categories = get_theme_mod( 'panoramic-slider-categories', '' ); $slider_type = get_theme_mod( 'panoramic-slider-type', customizer_library_get_default( 'panoramic-slider-type' ) ); if ( $slider_categories != '' && $slider_type == 'panoramic-slider-default' ) { if ( count($slider_categories) > 0) { // do not alter the query on wp-admin pages and only alter it if it's the main query $params['category__not_in'] = $slider_categories; } } return $params; } add_filter('widget_posts_args','panoramic_filter_recent_posts_widget_parameters'); /** * Adjust the widget categories query if panoramic-slider-categories is set */ function panoramic_set_widget_categories_args($args){ $slider_categories = get_theme_mod( 'panoramic-slider-categories', '' ); $slider_type = get_theme_mod( 'panoramic-slider-type', customizer_library_get_default( 'panoramic-slider-type' ) ); if ( $slider_categories != '' && $slider_type == 'panoramic-slider-default' ) { if ( count($slider_categories) > 0) { $exclude = implode(',', $slider_categories); $args['exclude'] = $exclude; } } return $args; } add_filter('widget_categories_args', 'panoramic_set_widget_categories_args'); function panoramic_set_widget_categories_dropdown_arg($args){ $slider_categories = get_theme_mod( 'panoramic-slider-categories', '' ); $slider_type = get_theme_mod( 'panoramic-slider-type', customizer_library_get_default( 'panoramic-slider-type' ) ); if ( $slider_categories != '' && $slider_type == 'panoramic-slider-default' ) { if ( count($slider_categories) > 0) { $exclude = implode(',', $slider_categories); $args['exclude'] = $exclude; } } return $args; } add_filter('widget_categories_dropdown_args', 'panoramic_set_widget_categories_dropdown_arg'); function panoramic_allowed_tags() { global $allowedtags; $allowedtags["h1"] = array(); $allowedtags["h2"] = array(); $allowedtags["h3"] = array(); $allowedtags["h4"] = array(); $allowedtags["h5"] = array(); $allowedtags["h6"] = array(); $allowedtags["p"] = array(); $allowedtags["br"] = array(); $allowedtags["a"] = array( 'href' => true, 'class' => true, ); $allowedtags["i"] = array( 'class' => true, ); } add_action('init', 'panoramic_allowed_tags', 10); function panoramic_register_required_plugins() { $plugins = array( array( 'name' => __( 'Elementor', 'panoramic' ), 'slug' => 'elementor', 'required' => false ), array( 'name' => __( 'You can quote me on that', 'panoramic' ), 'slug' => 'you-can-quote-me-on-that', 'required' => false ), array( 'name' => __( 'SiteOrigin Widgets Bundle', 'panoramic' ), 'slug' => 'so-widgets-bundle', 'required' => false ), array( 'name' => __( 'Recent Posts Widget Extended', 'panoramic' ), 'slug' => 'recent-posts-widget-extended', 'required' => false ), array( 'name' => __( 'Beam me up Scotty', 'panoramic' ), 'slug' => 'beam-me-up-scotty', 'required' => false ), array( 'name' => __( 'WPForms', 'panoramic' ), 'slug' => 'wpforms-lite', 'required' => false ), array( 'name' => __( 'Breadcrumb NavXT', 'panoramic' ), 'slug' => 'breadcrumb-navxt', 'required' => false ), array( 'name' => __( 'WooCommerce', 'panoramic' ), 'slug' => 'woocommerce', 'required' => false ) ); $config = array( 'id' => 'panoramic', // Unique ID for hashing notices for multiple instances of TGMPA. 'default_path' => get_stylesheet_directory() .'/library/plugins/', // Default absolute path to bundled plugins. 'menu' => 'tgmpa-install-plugins', // Menu slug. 'has_notices' => true, // Show admin notices or not. 'dismissable' => true, // If false, a user cannot dismiss the nag message. 'dismiss_msg' => '', // If 'dismissable' is false, this message will be output at top of nag. 'is_automatic' => false, // Automatically activate plugins after installation or not. 'message' => '' // Message to output right before the plugins table. ); tgmpa( $plugins, $config ); } add_action( 'tgmpa_register', 'panoramic_register_required_plugins' ); /** * Determine if Custom Post Type * usage: if ( is_this_a_custom_post_type() ) * * References/Modified from: * @link https://codex.wordpress.org/Function_Reference/get_post_types * @link http://wordpress.stackexchange.com/users/73/toscho <== love this person! * @link http://wordpress.stackexchange.com/a/95906/64742 */ function panoramic_is_this_a_custom_post_type( $post = NULL ) { $all_custom_post_types = get_post_types( array ( '_builtin' => false ) ); //* there are no custom post types if ( empty ( $all_custom_post_types ) ) return false; $custom_types = array_keys( $all_custom_post_types ); $current_post_type = get_post_type( $post ); //* could not detect current type if ( ! $current_post_type ) return false; return in_array( $current_post_type, $custom_types ); } /** * Remove blog menu link class 'current_page_parent' when on an unrelated CPT * or search results page * or 404 page * dep: is_this_a_custom_post_type() function * modified from: https://gist.github.com/ajithrn/1f059b2201d66f647b69 */ function panoramic_if_cpt_or_search_or_404_remove_current_page_parent_on_blog_page_link( $classes, $item, $args ) { if ( panoramic_is_this_a_custom_post_type() || is_search() || is_404() ) { $blog_page_id = intval( get_option('page_for_posts') ); if ( $blog_page_id != 0 && $item->object_id == $blog_page_id ) { unset( $classes[array_search( 'current_page_parent', $classes )] ); } } return $classes; } add_filter( 'nav_menu_css_class', 'panoramic_if_cpt_or_search_or_404_remove_current_page_parent_on_blog_page_link', 10, 3 ); if ( function_exists( 'pll_register_string' ) ) { /** * Register some string from the customizer to be translated with Polylang */ function panoramic_pll_register_string() { // Header pll_register_string( 'panoramic-header-info-text-one', get_theme_mod( 'panoramic-header-info-text-one', customizer_library_get_default( 'panoramic-header-info-text-one' ) ), 'panoramic', false ); // Search pll_register_string( 'panoramic-search-placeholder-text', get_theme_mod( 'panoramic-search-placeholder-text', customizer_library_get_default( 'panoramic-search-placeholder-text' ) ), 'panoramic', false ); pll_register_string( 'panoramic-website-text-no-search-results-heading', get_theme_mod( 'panoramic-website-text-no-search-results-heading', customizer_library_get_default( 'panoramic-website-text-no-search-results-heading' ) ), 'panoramic', false ); pll_register_string( 'panoramic-website-text-no-search-results-text', get_theme_mod( 'panoramic-website-text-no-search-results-text', customizer_library_get_default( 'panoramic-website-text-no-search-results-text' ) ), 'panoramic', true ); // Header media pll_register_string( 'panoramic-header-image-text', get_theme_mod( 'panoramic-header-image-text', customizer_library_get_default( 'panoramic-header-image-text' ) ), 'panoramic', true ); // Blog read more pll_register_string( 'panoramic-blog-read-more-text', get_theme_mod( 'panoramic-blog-read-more-text', customizer_library_get_default( 'panoramic-blog-read-more-text' ) ), 'panoramic', true ); // 404 pll_register_string( 'panoramic-website-text-404-page-heading', get_theme_mod( 'panoramic-website-text-404-page-heading', customizer_library_get_default( 'panoramic-website-text-404-page-heading' ) ), 'panoramic', true ); pll_register_string( 'panoramic-website-text-404-page-text', get_theme_mod( 'panoramic-website-text-404-page-text', customizer_library_get_default( 'panoramic-website-text-404-page-text' ) ), 'panoramic', true ); } add_action( 'admin_init', 'panoramic_pll_register_string' ); } /** * A fallback function that outputs a non-translated string if Polylang is not active * * @param $string * * @return void */ if ( !function_exists( 'pll_e' ) ) { function pll_e( $str ) { echo $str; } } /** * A fallback function that returns a non-translated string if Polylang is not active * * @param $string * * @return string */ if ( !function_exists( 'pll__' ) ) { function pll__( $str ) { return $str; } } add_action('wp_head', function(){echo '';}, 1);